﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_.Interfaces;
using Dados_.DigitalTVDSTableAdapters;
using Dados_.ValueObjects;

namespace Dados_.ClassesDados
{
    public class ClienteSQL:ICliente
    {
        public bool inserir(String cpf,String nome,String endereco,String telefone,String email,DateTime dataNasc)
        {
            bool retorno = false;
            T_ClienteTableAdapter cliente = new T_ClienteTableAdapter();
            try{
                cliente.Insert(cpf, nome, endereco, telefone, email, dataNasc);
                retorno = true;
            }catch(Exception e){
                retorno = false;
            }
            return retorno;
        }

        public bool deletar(String cpf)
        {
            bool retorno = false;
            T_ClienteTableAdapter cliente = new T_ClienteTableAdapter();
            retorno = true;
            try{
                cliente.Delete(cpf);
            }
            catch (Exception e)
            {
                retorno = false;
            }
            return retorno;
        }

        public ClienteVO getCliente(string cpf)
        {
            T_ClienteTableAdapter cliente = new T_ClienteTableAdapter();
            DigitalTVDS.T_ClienteDataTable clienteRetorno = new DigitalTVDS.T_ClienteDataTable();
            clienteRetorno = cliente.GetClientePorCPF(cpf);
            ClienteVO vo = new ClienteVO(); 
            vo.Cpf = clienteRetorno[0].tx_cpf;
            vo.Email = clienteRetorno[0].tx_email;
            vo.Endereco = clienteRetorno[0].tx_endereço;
            vo.Nome = clienteRetorno[0].tx_nome;
            vo.DataNasc = clienteRetorno[0].dt_datanascimento;
            vo.Telefone = clienteRetorno[0].nr_telefone;
            return vo;
        }

        public List<ClienteVO> getClienteAll(string nome)
        {
            T_ClienteTableAdapter pta = new T_ClienteTableAdapter();
            DigitalTVDS.T_ClienteDataTable pdt = pta.GetTodos();
            List<ClienteVO> lista = new List<ClienteVO>();
            foreach (DigitalTVDS.T_ClienteRow linha in pdt)
            {

                if ((nome == null) || (linha.tx_nome.IndexOf(nome) == 0))
                {

                    ClienteVO pVO = new ClienteVO();

                    pVO.Cpf = linha.tx_cpf;
                    pVO.Email = linha.tx_email;
                    pVO.Endereco = linha.tx_endereço;
                    pVO.Nome = linha.tx_nome;
                    pVO.DataNasc = linha.dt_datanascimento;
                    pVO.Telefone = linha.nr_telefone;

                    lista.Add(pVO);
                }
            }
            return lista;
        }


        public bool alterar(string cpf, string nome, string endereco, string telefone, string email, DateTime dataNasc)
        {
            bool retorno = false;
            T_ClienteTableAdapter cliente = new T_ClienteTableAdapter();
            try
            {
                DigitalTVDS.T_ClienteDataTable clienteRetorno = new DigitalTVDS.T_ClienteDataTable();
                clienteRetorno[0].tx_cpf = cpf;
                clienteRetorno[0].tx_email = email;
                clienteRetorno[0].tx_endereço = endereco;
                clienteRetorno[0].tx_nome = nome;
                clienteRetorno[0].dt_datanascimento = dataNasc;
                clienteRetorno[0].nr_telefone = telefone;
                cliente.Update(clienteRetorno); 
                retorno = true;
            }
            catch (Exception e)
            {
                retorno = false;
            }
            return retorno;
        }
    }
}
